package com.itheima.reggie.mapper;

import com.itheima.reggie.dto.DishDto;
import com.itheima.reggie.entity.Dish;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface DishMapper {
    //根据类别的id查询菜品数量
    @Select("SELECT COUNT(*) FROM dish WHERE category_id=#{categoryId};")
    Long findDishWithCategory(Long categoryId);

    /**
     * 插入菜品,而且需要主键设置给实体类
     *
     * @param dishDto
     */
    @Insert("INSERT INTO dish VALUES (null,#{name},#{categoryId},#{price},#{code},#{image},#{description},#{status},#{sort},#{createTime},#{updateTime},#{createUser},#{updateUser},0)")
    //主键设置注解:通知Mybatis插入数据后,把id的值设置给实体类的id属性
    @Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id")
    void save(DishDto dishDto);

    //根据Id查找菜品
    List<Dish> findByName(String name);

    //根据id查找菜品
    @Select("SELECT  * FROM dish WHERE id=#{id}")
    Dish findById(long id);

    /**
     * 根据菜品id修改菜品
     *
     * @param dishDto
     */
    void updateById(DishDto dishDto);

    /**
     * 根据类别的id查询菜品
     * @param categoryId
     * @return
     */

    List<Dish> findByCategoryId(@Param("categoryId") Long categoryId , @Param("status") Integer status);

    /**
     *   判断里面是否有在售状态,在售不可删除,查询是否存在在售状态
     * @param ids
     * @return
     */
    Long qureyDishWithStatus(@Param("ids") List<Long> ids);

    /**
     * 若删除套餐都是停售状态,则可直接删除
     * @param ids
     */
    void deleteByIds(@Param("ids")List<Long> ids);

    /**
     * 批量起售
     * @param ids
     * @param status
     */
    void updateStatus(@Param("ids") List<Long> ids, @Param("status") Integer status);

}
